const path = require('path')
require('babel-polyfill')

const resolve = dir => {
  return path.join(__dirname, dir)
}
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const prodGzipList = ['js', 'css'];

// 项目部署基础
// 默认情况下，我们假设你的应用将被部署在域的根目录下,
// 例如：https://www.my-app.com/
// 默认：'/'
// 如果您的应用程序部署在子路径中，则需要在这指定子路径
// 例如：https://www.foobar.com/my-app/
// 需要将它改为'/my-app/'

module.exports = {
  publicPath: process.env.VUE_file_URL,
  outputDir: process.env.OUTPUTDIR,
  // 如果你不需要使用eslint，把lintOnSave设为false即可
  lintOnSave: false,
  chainWebpack: config => {
    config.plugins.delete('prefetch')
    config.resolve.alias
      .set('@', resolve('src')) // key,value自行定义，比如.set('@@', resolve('src/components'))
      .set('_c', resolve('src/components'))
    if (process.env.NODE_ENV === 'production') {  // 生产模式开启
      config.plugin('compression-webpack-plugin').use(
        new CompressionWebpackPlugin({
          // filename: 文件名称，这里我们不设置，让它保持和未压缩的文件同一个名称
          algorithm: 'gzip', // 指定生成gzip格式
          test: new RegExp('\\.(' + prodGzipList.join('|') + ')$'), // 匹配哪些格式文件需要压缩
          threshold: 10240, //对超过10k的数据进行压缩
          minRatio: 0.6 // 压缩比例，值为0 ~ 1
        })
      )
    }
  },
  // 设为false打包时不生成.map文件
  productionSourceMap: false,
  // 打包时干掉所有的打印
  configureWebpack: (config)=>{
    if(process.env.NODE_ENV === 'production'){
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
    }
  },
  // 配置需要兼容的包
  transpileDependencies: [
    'view-design',
    'iview',
    'axios',
    'tree-table-vue',
    'v-org-tree'
  ],
  // 这里写你调用接口的基础路径，来解决跨域，如果设置了代理，那你本地开发环境的axios的baseUrl要写为 '' ，即空字符串
  devServer: {
    open: true,
    port: '8091',
    proxy: {
      '/api': {
        target: 'http://192.168.8.168:88/api', // 楼上测试环境(jjg)
        // target: 'http://192.168.8.168:8002/api', // 楼上测试环境(t33)
        // target: 'http://10.10.10.117:81/api', // 测试环境
        // target: 'http://www.vxhro.com:81', // 测试环境
        // target: 'https://www.vxhro.com', // 正式环境
        changeOrigin: true,
        ws: false,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  },
  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          main_color: '#188cc7',
          sidebar_color: '#353941',
          warning_color: '#f25149',
          error_color: '#f25149',
          info_color: '#2db7f5',
          success_color: '#19be6b'
        }
      }
    }
  }
}
